Software can be updated for various reasons. For example, software developers may create a new version of software as an upgrade, as a new software release, as a software patch released to address performance or security issues in the software, and for other reasons. When developers modify software or create new releases or patches, some functionality of the software may be modified. Some functionality of the software, however, may remain unchanged from a previous version.
Changes to the functionality of software may be tracked by developers or authors during the modification process. If multiple developers or authors collaborate on the modification process, compiling the various changes and determining what changes have been made can be a difficult and/or time consuming process. Also, some functionality of the software may be inadvertently changed during the modification process.
Because of these and other issues, modified software packages are sometimes distributed in installation packages or upgrades that replace certain files or uninstall a previous version and install the new version of the software in its entirety. Distributing large installation packages and/or patches can consume network resources, storage space, and/or time consumed during transmission of the installation packages or patches.
While some approaches exist for identifying changes made to software during a modification process by identifying simple differences in the software and including only portions that include changed code in the installation packages or patches, some changes made to software code such as time stamps, author fields, and the like, may not affect the functionality of the software. As such, some changes made to software during a modification process may or may not be important for distribution to users.
It is with respect to these and other considerations that the disclosure made herein is presented.